package com.focusai.efairy.ui.activity;

import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.widget.ImageView;

import com.focusai.efairy.EFApplication;
import com.focusai.efairy.R;
import com.focusai.efairy.model.manager.CacheManager;
import com.focusai.efairy.ui.base.BaseFragmentActivity;
import com.focusai.efairy.utils.ActivityUtils;
import com.focusai.efairy.utils.JiGuangPushUtil;
import com.focusai.efairy.utils.PreferenceKeys;
import com.focusai.efairy.utils.PreferencesUtil;
import com.focusai.efairy.utils.log.Log;

import io.rong.imlib.RongIMClient;

/**
 * Created by luo_guangwen on 2017/7/11.
 */

public class StartActivity extends BaseFragmentActivity {
    private static final String TAG = StartActivity.class.getName();

    /**
     * 欢迎页面至少停留时长.
     */
    private static final long MINI_WAIT_TIME = 2 * 1000;
    private boolean hasLogined = false;
    private boolean isOpenAppFirst = true;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.act_start);
        setDefaultValues();
        entryHomeActivity();
//        connectToRoogYun();
    }

    @Override
    protected void setDefaultValues() {
        ImageView bgView = findView(R.id.img_picture);
        if (EFApplication.isEfairyApp()) {
            bgView.setImageResource(R.drawable.icon_start_img);
        } else if (EFApplication.isCciotApp()) {
            bgView.setImageResource(R.drawable.icon_start_cciot);
        }
//        ImageLoaderFactory.getImageLoader().loadImage(mContext, imageView, R.drawable.icon_start_img, R.drawable.icon_start_img, false);
        long userId = PreferencesUtil.getInstance().getLong(PreferencesUtil.PrefType.system, PreferenceKeys.CURRENT_LOGIN_USER_ID, 0);
        if (userId > 0) {
            hasLogined = true;
        }
        isOpenAppFirst = true;
//        isOpenAppFirst = AndroidUtils.getVersionCode(getContext()) > PreferencesUtil.getInstance().getInt(PreferencesUtil.PrefType.system, PreferenceKeys.OPEN_APP_FIRST, 1);
    }

    @Override
    protected boolean hasActionBar() {
        return false;
    }

    private void entryHomeActivity() {
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                if (hasLogined) {
                    connectToRoogYun();
                } else if (isOpenAppFirst) {
                    Intent intent = new Intent(StartActivity.this, FunctionWizardActivity.class);
                    startActivity(intent);
                    finish();
                } else {
                    Intent intent = new Intent(StartActivity.this, PasswdLoginActivity.class);
                    startActivity(intent);
                    finish();
                }
            }
        }, MINI_WAIT_TIME);
    }

    private void connectToRoogYun() {
//        System.out.println(CacheManager.getRoogCloudAccessToken());
        //connect() 方法有三个回调 onSuccess() 、onError 和 onTokenIncorrect()， 每次调用只会回调其中一个，且只会回调一次。
        RongIMClient.connect(CacheManager.getRoogCloudAccessToken(), new RongIMClient.ConnectCallback() {

            /**
             *回调 onTokenIncorrect()，说明 Token 无效
             * Token 错误。可以从下面两点检查 1.  Token 是否过期，如果过期您需要向 App Server 重新请求一个新的 Token
             *                            2.  token 对应的 appKey 和工程里设置的 appKey 是否一致
             */
            @Override
            public void onTokenIncorrect() {
//                entryHomeActivity();
                ActivityUtils.startMainHomeActivity(StartActivity.this);
                Intent intent = new Intent(StartActivity.this, FunctionWizardActivity.class);
                startActivity(intent);
                finish();
//                finish();
                Log.D(TAG, "融云登录onTokenIncorrect");

            }

            /**
             * 连接融云成功
             * @param userid 当前 token 对应的用户 id
             */
            @Override
            public void onSuccess(String userid) {
//                entryHomeActivity();
                Log.D(TAG, "极光推送设置别名 = " + userid);
                JiGuangPushUtil.setAlias(1, userid);
                Log.D(TAG, "融云登录成功 用户Userid = " + userid);
                ActivityUtils.startMainHomeActivity(StartActivity.this);
                finish();
            }

            /**
             * 连接融云失败
             * @param errorCode 错误码，可到官网 查看错误码对应的注释
             */
            @Override
            public void onError(RongIMClient.ErrorCode errorCode) {
//                entryHomeActivity();
                Log.D(TAG, "融云登录失败 errorCode = " + errorCode);
                ActivityUtils.startMainHomeActivity(StartActivity.this);
                finish();
//                1、AppKey 错误，请检查您使用的 AppKey 是否正确。errorCode: RC_CONN_ID_REJECT = 31002
//                2、Token 无效:  RC_CONN_USER_OR_PASSWD_ERROR = 31004
//                3、AppKey 与 Token 不匹配:  RC_CONN_NOT_AUTHRORIZED = 31005
//                    请检查您使用的 AppKey 与 Token 是否正确，是否匹配。一般有以下两种原因。
//                    一是 Token 错误，请您检查客户端初始化使用的 AppKey 和您服务器获取 Token 使用的 AppKey 是否一致；
//                    二是 Token 过期，是因为您在开发者后台设置了 Token 过期时间，您需要请求您的服务器重新获取 Token 并再次用新的 Token 建立连接。
//                4、包名和后台注册信息不匹配:RC_CONN_PACKAGE_NAME_INVALID = 31007;请检查您 App 的 BundleID 是否正确。
//                5、AppKey 被封禁或已删除:RC_CONN_APP_BLOCKED_OR_DELETED = 31008;请检查您使用的 AppKey 是否正确。
//                6、用户被封禁:RC_CONN_USER_BLOCKED = 31009;请检查您使用的 Token 是否正确，以及对应的 UserId 是否被封禁。
//                7、当前用户在其他设备上登录，此设备被踢下线;RC_DISCONN_KICK = 31010
//                8、SDK 没有初始化; RC_CLIENT_NOT_INIT = 33001;在使用 SDK 任何功能之前，必须先 Init。
//                9、开发者接口调用时传入的参数错误:RC_INVALID_PARAMETER = 33003; 请检查接口调用时传入的参数类型和值。
//                10、开发者接口调用时传入的参数错误; RC_INVALID_ARGUMENT = -1000;请检查接口调用时传入的参数类型和值

            }
        });
    }
}
